package Negocio;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * @author sabidosan
 */
public class Recurso {
    
    private String tipo;
    private String nombre;
    private String descripcion;
    private int precio;
    private String portable;
    private int peso;
    private String consumible;
    private int cantidad;

    /**
     * @return the tipo
     */
    public String getTipo() {
        return tipo;
    }

    /**
     * @param tipo the tipo to set
     */
    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    /**
     * @return the nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * @param nombre the nombre to set
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * @return the descripcion
     */
    public String getDescripcion() {
        return descripcion;
    }

    /**
     * @param descripcion the descripcion to set
     */
    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    /**
     * @return the precio
     */
    public int getPrecio() {
        return precio;
    }

    /**
     * @param precio the precio to set
     */
    public void setPrecio(int precio) {
        this.precio = precio;
    }

    /**
     * @return the portable
     */
    public String getPortable() {
        return portable;
    }

    /**
     * @param portable the portable to set
     */
    public void setPortable(String portable) {
        this.portable = portable;
    }

    /**
     * @return the peso
     */
    public int getPeso() {
        return peso;
    }

    /**
     * @param peso the peso to set
     */
    public void setPeso(int peso) {
        this.peso = peso;
    }

    /**
     * @return the consumible
     */
    public String getConsumible() {
        return consumible;
    }

    /**
     * @param consumible the consumible to set
     */
    public void setConsumible(String consumible) {
        this.consumible = consumible;
    }

    /**
     * @return the cantidad
     */
    public int getCantidad() {
        return cantidad;
    }

    /**
     * @param cantidad the cantidad to set
     */
    public void setCantidad(int cantidad) {
        this.cantidad = cantidad;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Recurso other = (Recurso) obj;
        if ((this.tipo == null) ? (other.tipo != null) : !this.tipo.equals(other.tipo)) {
            return false;
        }
        if ((this.nombre == null) ? (other.nombre != null) : !this.nombre.equals(other.nombre)) {
            return false;
        }
        if ((this.descripcion == null) ? (other.descripcion != null) : !this.descripcion.equals(other.descripcion)) {
            return false;
        }
        if (this.precio != other.precio) {
            return false;
        }
        if ((this.portable == null) ? (other.portable != null) : !this.portable.equals(other.portable)) {
            return false;
        }
        if (this.peso != other.peso) {
            return false;
        }
        if ((this.consumible == null) ? (other.consumible != null) : !this.consumible.equals(other.consumible)) {
            return false;
        }
        if (this.cantidad != other.cantidad) {
            return false;
        }
        return true;
    }
    
    
    public boolean guardar(){
        ObjetoDB o = new ObjetoDB();
        
        o.setTabla("Recurso");
        o.addCampo("tipo", tipo);
        o.addCampo("nombre", nombre);
        o.addCampo("descripcion", descripcion);
        o.addCampo("precio", String.valueOf(precio));
        o.addCampo("portable", portable);
        o.addCampo("peso", String.valueOf(peso));
        o.addCampo("consumible", consumible);
        o.addCampo("cantidad", String.valueOf(cantidad));
        
        AdminDB adb = new AdminDB();
        return adb.guardar(o);
    }

    public List<Recurso> getAllProductos(Connection conn) {
        try
       {
           Statement stmt = conn.createStatement();
           ResultSet rset = stmt.executeQuery("SELECT * FROM `bysDB`.`Recurso` WHERE tipo='Producto'");
           
           List<Recurso> recursos = new ArrayList<Recurso>();
                      
           while(rset.next()){
               Recurso r = new Recurso();
               Integer id = rset.getInt("ID");
               r.setTipo(rset.getString("tipo"));
               r.setNombre(rset.getString("nombre"));
               r.setDescripcion(rset.getString("descripcion"));
               r.setPrecio(Integer.parseInt(rset.getString("precio")));
               r.setPortable(rset.getString("portable"));
               r.setPeso(Integer.parseInt(rset.getString("peso")));
               r.setConsumible(rset.getString("consumible"));
               r.setCantidad(Integer.parseInt(rset.getString("cantidad")));
               recursos.add(r);
           }
           if (rset !=null) rset.close();
           if (stmt != null) stmt.close();
           if (conn != null)conn.close();

           return recursos;

        } catch (Exception e) {
            Logger.getLogger("Producto").log(Level.SEVERE, "ERROR: " + e.getLocalizedMessage());
            return null;
        }
    }
    
        public List<Recurso> getAllMaquinas(Connection conn) {
        try
       {
           Statement stmt = conn.createStatement();
           ResultSet rset = stmt.executeQuery("SELECT * FROM `bysDB`.`Recurso` WHERE tipo='Maquina'");
           
           List<Recurso> recursos = new ArrayList<Recurso>();
                      
           while(rset.next()){
               Recurso r = new Recurso();
               Integer id = rset.getInt("ID");
               r.setTipo(rset.getString("tipo"));
               r.setNombre(rset.getString("nombre"));
               r.setDescripcion(rset.getString("descripcion"));
               r.setPrecio(Integer.parseInt(rset.getString("precio")));
               r.setPortable(rset.getString("portable"));
               r.setPeso(Integer.parseInt(rset.getString("peso")));
               r.setConsumible(rset.getString("consumible"));
               r.setCantidad(Integer.parseInt(rset.getString("cantidad")));
               recursos.add(r);
           }
           if (rset !=null) rset.close();
           if (stmt != null) stmt.close();
           if (conn != null)conn.close();

           return recursos;

        } catch (Exception e) {
            Logger.getLogger("Maquina").log(Level.SEVERE, "ERROR: " + e.getLocalizedMessage());
            return null;
        }
    }
    
}
